"""
靓号管理视图函数
功能：实现靓号的增删改查
"""

from django.shortcuts import render, HttpResponse, redirect
from app.models import PrettyNumber  # 数据表类

from app.utils.form import PrettyNumberForm, PrettyNumberEditForm  # 表单ModelForm类

from app.utils.pagination import Pagination  # 导入分页导航条


def pn_list(request):
    """
    靓号列表
    """

    # 第一次显示的时候，查询条件也就是data_dict为空，所以查询所有数据
    data_dict = {}
    search_data = request.GET.get('searchMobile', '')
    if search_data:
        data_dict['mobile__contains'] = search_data

    # ########## 分页准备数据阶段 ##########
    # 字典格式： queryset = {‘mobile__contains’: '9999'}
    # **data_dict传入字典，必须以**打头
    # order_by('-level') 倒序排列
    queryset = PrettyNumber.objects.filter(**data_dict).order_by('-level')

    page_object = Pagination(request, queryset)  # 实例化分页导航条类
    page_queryset = page_object.page_queryset  # 获得分完页的数据结果
    # ########## 分页数据准备结束 ##########

    # 生成分页导航条
    page_nav = page_object.html()

    # 把所有参数生成字典传递给前端
    context = {
        'search_data': search_data,
        'queryset': page_queryset,  # 分完页的数据结果
        'page_nav': page_nav  # 生成的页码导航条
    }

    return render(request, 'PrettyNumber_list.html', context)


def pn_add(request):
    """
    增加靓号
    """
    if request.method == 'GET':
        form = PrettyNumberForm()  # 实例化表单模型类
        return render(request, 'PrettyNumber_add_modelform.html', {'form': form})

    # POST请求
    form = PrettyNumberForm(data=request.POST)  # 拿到所有提交过来的数据
    if form.is_valid():  # 数据校验

        # 如果你想对数据表中的字段另外再传递值来保存，就用
        # form.instance.字段名 = '值'
        # form.instance.password = '0000'  # 默认密码是0000

        form.save()  # 向 model = PrettyNumber 定义的表保存数据
        return redirect('/PrettyNumber/list/')
    else:
        # form中带了POST过来的请求
        return render(request, 'PrettyNumber_add_modelform.html', {'form': form})


def pn_edit(request, nid):
    """
    靓号编辑
    """
    row_data = PrettyNumber.objects.filter(id=nid).first()

    if request.method == 'GET':
        form = PrettyNumberEditForm(instance=row_data)  # 将查询到的对象传递给form
        return render(request, 'PrettyNumber_edit_modelform.html', {'form': form})

    # POST请求
    form = PrettyNumberEditForm(data=request.POST, instance=row_data)  # 拿到所有提交过来的数据
    if form.is_valid():  # 数据校验
        form.save()  # 向 model = UserInfo 定义的表保存数据
        return redirect('/PrettyNumber/list/')
    else:
        # form中带了POST过来的请求
        return render(request, 'PrettyNumber_edit_modelform.html', {'form': form})


def pn_delete(request, nid):
    """
    靓号删除
    """
    PrettyNumber.objects.filter(id=nid).delete()
    return redirect('/PrettyNumber/list/')
